lambda 키워드로 익명함수를 만듭니다.


In [ ]:
(lambda x: x*x)(10)

리스트 컴프리헨션으로 제곱 값을 구합니다.


In [ ]:
[x*x for x in range(5)]

맵 함수는 람다함수를 넘겨서 반복적인 작업을 수행한 후 그 결과값을 모아서 리턴합니다. 맵 함수는 제너레이터처럼 실행됩니다.


In [ ]:
m = map(lambda x: x*x, [3, 4])

In [ ]:
next(m)

In [ ]:
next(m)

In [ ]:
list(map(lambda x: x*x, range(5)))

람다 함수를 변수에 저장하여 사용하면 일반 함수와 동일합니다.


In [ ]:
sqr = lambda x: x*x
list(map(sqr, range(5)))

In [ ]:
sqr.__class__

In [ ]:
def sqr2(x):
    return x*x
list(map(sqr2, range(5)))

In [ ]:
sqr2.__class__

필터는 리턴 값이 참인 것만 리스트로 돌려 줍니다.
홀수 리스트를 만들기 위해 필터를 사용하지 않는 버전, 필터와 함수를 사용한 버전, 필터와 람다 함수를 사용한 버전을 각각 확인해 보세요.


In [ ]:
def odd(p):
    return [i for i in p if i%2]
odd(range(10))

In [ ]:
def odd(k):
    return k%2
list(filter(odd, range(10)))

In [ ]:
list(filter(lambda x: x%2, range(10)))

리듀스는 파라메타의 값들을 모두 누적합니다.


In [ ]:
from functools import reduce

In [ ]:
reduce(lambda x, y: x+y, range(10))

In [ ]:
reduce(lambda x, y: x+y, 'abcde')

In [ ]:
reduce(lambda x, y: y+x, 'abcde')

두개의 람다함수를 리스트에 할당하고 선택적으로 사용할 수 있습니다.


In [ ]:
func_choice = [lambda x, y: x**y, lambda x, y: x/y]

In [ ]:
func_choice[0].__class__

In [ ]:
func_choice[0](10, 2)

In [ ]:
func_choice[1](10, 2)

In [ ]:
def f1(x, y):
    return x**y

In [ ]:
def f2(x, y):
    return x/y

In [ ]:
func_choice2 = [f1, f2]

In [ ]:
func_choice2[0](10, 2)

In [ ]:
func_choice2[1](10, 2)

In [ ]: